Integrated circuits (ICs) are used in various applications and devices. ICs may include memory modules such as an embedded non-volatile memory (NVM) module that has the capability to retain the stored data even when the device is not powered.
NVM module may have many applications. For example, an external NVM module, e.g., a flash memory module, may be used to configure an IC device. Configuration data stored in the NVM module is assessed by a memory controller. The memory controller may be included in the IC device itself or may be placed on a separate device that is used to configure the IC device. The memory controller manages the data stored in the NVM and communicates with the device that is being configured.
Generally speaking, an NVM module may have multiple unusable blocks, i.e., blocks or cells in the module that have worn out and cannot be written to or read from, that need to be remapped. A table, commonly referred to as a bad block table, that includes all the unusable block addresses is usually kept in the NVM module and a memory controller needs to be able to read and access the table in order to properly map every unusable block address to a corresponding spare block in the NVM module.
Typically, the memory controller needs to have enough storage capacity to store all the unusable block information from the unusable block table. This may be inefficient because the number of unusable blocks varies across different memory modules. For instance, a 512 MB NVM module with a total of 4096 blocks will have a maximum of 80 unusable blocks, assuming the maximum number of unusable blocks to be approximately 2% of the total number of blocks. An NVM module with a greater storage capacity and a higher number of memory blocks has a greater number of unusable blocks.
Therefore, the memory controller will need to have enough storage capacity in order to store the maximum number of possible unusable block addresses. As a result, the memory controller may need a higher than required storage capacity in order to accommodate different types of NVM modules with different storage capacities.